@staticmethod
는 파이썬 클래스 내부에서 정의되는 메서드를 "정적 메서드(static method)"로 지정하기 위해 사용하는 데코레이터이다. 정적 메서드는 클래스나 인스턴스의 상태와 무관하게 작동하는 독립적인 메서드로, 클래스 이름 또는 인스턴스를 통해 호출할 수 있다.
정적 메서드는 클래스 내부에서 정의하되, @staticmethod
데코레이터를 사용하고, 메서드 정의 시 self
나 cls
를 첫 번째 인자로 받지 않는다. 호출 시에는 클래스명 또는 인스턴스를 통해 호출할 수 있다.
class Math:
@staticmethod
def add(x, y):
return x + y
# 호출 방법
Math.add(3, 5) # 클래스명으로 호출
m = Math()
m.add(3, 5) # 인스턴스로도 호출 가능
class Account:
numOfAccounts = 0
def __init__(self, name):
self.name = name
Account.numOfAccounts += 1
@staticmethod
def reset_count():
Account.numOfAccounts = 0
reset_count()
는 Account
클래스의 정적 메서드로, 인스턴스 없이 클래스 변수에 접근하여 초기화 작업을 수행한다.self
, cls
를 참조하지 않기 때문에 정적 메서드로 구현하는 것이 적절하다.구분 | 일반 메서드 | 클래스 메서드 | 정적 메서드 |
---|---|---|---|
데코레이터 | (없음) | @classmethod | @staticmethod |
첫 번째 인자 | self (인스턴스) | cls (클래스) | 없음 |
클래스 변수 접근 | 가능 | 가능 | 클래스명을 통해 수동 접근 |
인스턴스 변수 접근 | 가능 | 불가능 | 불가능 |
용도 | 인스턴스 동작 구현 | 클래스 상태 제어 | 독립적 기능 제공 |